#!/bin/bash
# pip install typing_extensions ninja numpy

apt update
apt install -y ccache build-essential cmake git pkg-config

apt install -y openssl mpi-default-dev libprotobuf-dev

#* 矩阵库
# BLAS (Basic Linear Algebra Subprograms)，是一个常见线性代数操作的API规范，偏向底层，主要内容有：向量相加、标量相乘、点积、线性组合、矩阵相乘等。

# BLAS/LAPACK既然是API规范，就应该有相应的实现，常用的有这些：
# MKL, Intel Math Kernel Library。用于Intel处理器的(注意和MKL-DNN库的区别，MKL-DNN是英特尔的一个独立的神经网络库：MKL for Deep Neural Networks)；
# ATLAS, Automatically Tuned Linear Algebra Software，多平台的；
# OpenBLAS, 多平台的；
# Accelerate, 苹果macOS、iOS平台上的； #* 苹果的，不安装
# Eigen, 这个库只有头文件，实现了BLAS和一部分LAPACK，集成到了PyTorch项目的thirdparty下；
# cuBLAS, NVIDIA的BLAS实现，基于NVIDIA的GPU硬件（此外还有cuFFT、cuRAND, cuSPARSE等）； #* 这个应当在 cuda_python 镜像中已经具备
# MAGMA, 基于CUDA、HIP、 Intel Xeon Phi、OpenCL的BLAS/LAPACK实现；
apt install -y  libatlas-base-dev \
                libopenblas-dev \
                libeigen3-dev \
                liblapack-dev \
                libmkl-dev \
                libmagma-dev
